package com.hy.dto;

import com.google.common.collect.Lists;
import com.hy.bean.SysDept;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.beanutils.BeanUtils;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

@Setter
@Getter
public class DeptLevelDto extends SysDept {
//    private List<DeptLevelDto> deptList = new ArrayList<>();
    //通过Lists这个类的静态方法直接创建java.util.ArrayList对象
    private List<DeptLevelDto> deptList = Lists.newArrayList();

    //方便观察
    @Override
    public String toString() {
        return super.toString()+",DeptLevelDto{" +
                "deptList=" + deptList +
                '}';
    }

    /**
     *
     * @param sysDept 传入SysDept类的对象
     * @return 转成 DeptLevelDto对象
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     *
     * 传入SysDept类的对象 -> 转成 DeptLevelDto对象
     *
     * BeanUtils：主要提供了对于 JavaBean 进行各种操作，比如对象，属性复制等等，自动转换数据类型。
     * 相同属性名 的属性值进行拷贝。
     */
    public static DeptLevelDto adapt(SysDept sysDept) throws InvocationTargetException, IllegalAccessException {
        DeptLevelDto deptLevelDto = new DeptLevelDto();
        //pom文件中导入一个 apache下的commons-beanutils工具包
        //                        dest目标     src 源
        BeanUtils.copyProperties(deptLevelDto,sysDept);
        return deptLevelDto;
    }
}
